package com.dc.refactoring._2_在对象之间搬移特性._1_MoveMethod.newObject.methodTwo;

public class Account {
    AccountType _accountType;
    int _daysOverdrawn;

    /**
     * 之前的搬移函数只引用了一个字段，所以只需将这个字段作为参数传给目标函数就行。
     * 如果搬移函数调用了Account中的另一个函数，就不能简单地处理。
     * 这种情况就必须将 源对象 传递给目标函数
     */
    public double overdraftCharge() {
        // 【1】将目标对象传递给目标函数
        return _accountType.overdraftCharge(this);
    }

    public double bankCharge() {
        double result = 4.5;
        if (_daysOverdrawn > 0) {
            result += overdraftCharge();
        }
        return result;
    }

}
